#ifndef _GT1151_H_
#define _GT1151_H_

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/miscdevice.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/miscdevice.h>
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/of_irq.h>
#include <linux/interrupt.h>
#include <linux/input.h>
#include <linux/input/mt.h>
#include <linux/input/touchscreen.h>

#define GT1151_COMMAND			0x8040		//控制命令寄存器
#define GT1151_CONFIG			0x8050		//配置寄存器起始
#define GT1151_PRODUCT_ID		0x8140		//产品ID
#define GT1151Q_GSTID_REG		0x814E		//GT1151Q当前检测到的触摸情况
#define GT1151Q_TP1_REG			0x814F		//第1个触摸点数据地址
#define GT1151Q_TP2_REG			0x8157		//第2个触摸点数据地址
#define GT1151Q_TP3_REG			0x815F		//第3个触摸点数据地址
#define GT1151Q_TP4_REG			0x8167		//第4个触摸点数据地址
#define GT1151Q_TP5_REG			0x816F		//第5个触摸点数据地址
#define GT1151Q_TP6_REG			0x8177		//第6个触摸点数据地址
#define GT1151Q_TP7_REG			0x817F		//第7个触摸点数据地址
#define GT1151Q_TP8_REG			0x8187		//第8个触摸点数据地址
#define GT1151Q_TP9_REG			0x818F		//第9个触摸点数据地址
#define GT1151Q_TP10_REG		0x8197		//第10个触摸点数据地址

#define GT1151_HW_CONFIG_LEN	239
#define GTP_MAX_TOUCH			5

typedef struct {
	struct input_dev *inputdev;						/* 输入设备句柄 */
	struct i2c_client *client;						/* I2C client句柄 */
	int rst_pin;									/* 复位引脚 */
	int intr_pin;									/* 中断引脚 */
	uint32_t x_range;								/* 宽度 */
	uint32_t y_range;								/* 高度 */
	uint8_t last_touch_state[GTP_MAX_TOUCH];		/* 各个触摸点上一次的触摸状态 */
	uint8_t write_buffer[512];						/* I2C写缓存 */
	uint8_t gt1151_config[GT1151_HW_CONFIG_LEN];	/* gt1151配置寄存器缓存 */
}gt1151_t;

#endif
